操作系统

您所在的位置:网站首页 ascii 图案 操作系统

操作系统

2024-07-10 23:52| 来源: 网络整理| 查看: 265

操作系统——内核雏形 实验目的:

如何生成一个内核,能引导该内核,并进行扩展

实验内容: 汇编和C的互相调用方法 ELF文件格式 使用Loader加载ELF文件 如何加载并扩展内核 设计题:修改启动代码,在引导过程中在屏幕上画出一个你喜欢的ASCII图案,并将第三章的内存管理功能代码、你自己设计的中断代码集成到你的kernel文件目录管理中,并建立makefile文件,编译成内核,并引导 实验环境:

VMware+Ubuntu32位

实验步骤: 1.汇编和C的互相调用方法

在这里插入图片描述 调用关系示意图如上,我们来看一下代码。 在这里插入图片描述 在这里插入图片描述 将foo.asm中定义的函数设为global模式,使得可以被调用,同时导入choose函数 int choose(int a ,int b)。 在这里插入图片描述 在bar.c中调用myprint函数,并定义choose函数。 编译,链接,运行: 在这里插入图片描述 可以发现调用是成功的!

2.ELF文件格式

在这里插入图片描述 格式图如上所示,其中我们来分别分析每一个部分的含义和数据结构。 ELF header: 在这里插入图片描述 Program header: 在这里插入图片描述 Program header描述的是一个段在文件中的位置、大小以及它被放进内存后所在的位置和大 小。如果我们想把一个文件加载进内存的话,需要的正是这些信息。

3.使用Loader加载ELF文件

我们的期望是使用Loader加载ELF文件,在之后肯定是要加载内核文件的。加载一个文件无非就是寻找文件、定位文件、读入内存三个步骤,所以在这次的loader中也是遵循这个步骤。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3